package tournoi.stateless;

import java.util.ArrayList;
import java.util.Collection;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import modele.Arbitre;
import modele.Equipe;
import modele.Joueur;
import modele.Match;
import modele.Tournoi;

@Stateless(name = "TournoiSessionBean", mappedName = "TournoiSessionBean")
public class TournoiSessionBean implements TournoiSessionLocal, TournoiSessionRemote{
	@PersistenceContext(name = "monUnite")
	private EntityManager em;
	
	@Override
	public Collection<Tournoi> getAllTournoi() {
		return GetFunction.getAllTournoi(em);
	}

	@Override
	public Tournoi getTournoiByName(String tournoi) {
		return GetFunction.getTournoiByName(em, tournoi);
	}
	
	@Override
	public Collection<Equipe> getAllEquipe() {
		return GetFunction.getAllEquipe(em);
	}

	@Override
	public Collection<Arbitre> getAllArbitre() {
		return GetFunction.getAllArbitre(em);
	}

	@Override
	public Arbitre getArbitreById(Long idArbitre) {
		return GetFunction.getArbitreById(em, idArbitre);
	}
	
	/*@Override
	public Collection<Joueur> getAllJoueurFromEquipe(String nom) {
		return GetFunction.getAllJoueurFromEquipe(em, nom);
	}*/
	
	@Override
	public boolean equipeExist(String nomEquipe) {
		return VerifFunction.equipeExist(em, nomEquipe);
	}
	
	@Override
	public boolean addEquipe (Tournoi tournoi, String nom, ArrayList<String> nomJoueur, ArrayList<String> prenomJoueur){
		
		return PersistMergeFunction.addEquipe(em, tournoi, nom, nomJoueur, prenomJoueur);
	}
	
	@Override
	public void addArbitre(String nom, String prenom) {
		PersistMergeFunction.addArbitre(em, nom, prenom);
	}

	@Override
	public void addTournoi(String nom) {
		PersistMergeFunction.addTournoi(em, nom);
	}

	@Override
	public void addEquipeToTournoi(Tournoi tournoi, Equipe equipe) {
		PersistMergeFunction.addEquipeToTournoi(em, tournoi, equipe);
	}
	
	@Override
	public void addAdmin(String login, String password) {
		PersistMergeFunction.addAdmin(em, login, password);
	}

	@Override
	public void addArbitreToMatch(Match match, Arbitre arbitre) {
		PersistMergeFunction.addArbitreToMatch(em, match, arbitre);
	}
	
	@Override
	public boolean lancerTournoi(Tournoi tournoi) {
		return PersistMergeFunction.lancerTournoi(em, tournoi);
	}

	@Override
	public boolean isAdmin(String login, String password) {
		return VerifFunction.isAdmin(em, login, password);
	}

	@Override
	public boolean lancerMatch(Match match) {
		return PersistMergeFunction.lancerMatch(em, match);
	}

	@Override
	public void finMatch(Tournoi tournoi, Match match, Equipe vainqueur) {
		PersistMergeFunction.finMatch(em, tournoi, match, vainqueur);
	}

	@Override
	public void addButToMatch(Match m, Joueur joueur, int minute) {
		PersistMergeFunction.addButToMatch(em, m, joueur, minute);
	}
	
	@Override
	public boolean verifTournoi(String nom)
	{
		return VerifFunction.verifTournoi(em, nom);
	}
	
	public boolean verifArbitre(String nom, String prenom)
	{
		return VerifFunction.verifArbitre(em, nom, prenom);
	}

	@Override
	public Match getMatchById(long id) {
		return GetFunction.getMatchById(em, id);
	}
	
	@Override
	public Equipe getEquipeById(long idEquipe) {
		return GetFunction.getEquipeById(em, idEquipe);
	}

	@Override
	public void setProlongation(Match m) {
		PersistMergeFunction.setProlongation(em, m);	
	}

	@Override
	public void setTirAuBut(Match m) {
		PersistMergeFunction.setTirAuBut(em, m);
	}

	@Override
	public Joueur getJoueurById(Long idJoueur) {
		return GetFunction.getJoueurById(em, idJoueur);
	}

	@Override
	public void jeuDeDonnes() {
		PersistMergeFunction.jeuDeDonnees(em);
		
	}
	

}
